草庐IT

c++ - CRT 和 WIN32 API

全部标签

c++ - 获取 Windows API 标题栏图标

我正在开发一个使用Qt框架来处理大多数窗口绘图的项目。但是,我想在标题栏区域进行一些样式设置,因此我最终不得不引入一些WindowsAPI来完成此操作。我的目标是一个类似Chrome的选项卡系统,位于标题栏区域。我已经有了我想要的行为(QWidget选项卡在顶部,WinAPI处理一些其他窗口方面,如最小化、最大化、aero捕捉等)。但是,我想知道如何显示标准窗口按钮(最小化、最大化/恢复、关闭)。现在,我正在通过位于正确位置的QPushButton并使用我提供的图标来创建自己的按钮,但理想情况下我想使用native图标。我的问题:有没有办法使用WindowsAPI获取这些按钮的图标?我

c - Win32 - 在创建窗口之前拦截窗口的更好方法

我正在尝试自动化外部Windows应用程序。目标是在不显示任何事件窗口/启动画面且不从其他应用程序窃取焦点的情况下使此应用程序最小化启动。我用C编写了一个小程序,它在循环中调用EnumWindows()并使用ShowWindow()来最小化所需的窗口。它非常快,在80%的情况下都有效。不幸的是,有时应用程序窗口仍在显示并在短时间内窃取焦点。拦截窗口的更好(确定)方法是什么?使用SetWindowsHookExHook是唯一的选择吗? 最佳答案 您是否尝试过使用STARTUPINFOstructure的wShowWindow成员?你传

c - 自动检测 C 中的操作系统并处理其特定的换行符

有没有办法检测编译C代码以处理文本文件中特定换行符的操作系统?例如,我在Windows机器上编译我的代码,它应该使用\r\n作为文本文件中的换行符,在Linux上它应该只使用\n。我需要这个程序来读取二进制文本文件并将文件的子字符串与其他字符串匹配。这应该适用于Windows和Linux。感谢您的帮助! 最佳答案 您不需要知道native存储格式。当读取一个文件时,您无法知道它是在Windows、Linux还是其他系统上创建的——它可能是在您正在使用的系统之外的另一个系统上创建的。当编写时,您的程序将使用操作系统的native库并输

c++ - SDL2 为假全屏切换 SDL_WINDOW_RESIZABLE 状态

要在没有模式集的情况下在SDL2中创建一个“假的”全屏窗口,您可以使用类似这样的方法创建一个无边框的最大化窗口。intidx=SDL_GetWindowDisplayIndex(g_displayWindow);SDL_Rectbounds;SDL_GetDisplayBounds(idx,&bounds);//SDL_SetWindowResizable(g_displayWindow,SDL_FALSE);SDL_SetWindowBordered(g_displayWindow,SDL_FALSE);SDL_SetWindowPosition(g_displayWindow,bo

c++ - Visual Studio 强制桌面 API

我是VisualStudio的新手,我尝试编译使用VirtualProtect函数的代码。编译失败,我本来以为是链接问题,但经过进一步调查,甚至函数的常量都没有初始化,所以问题似乎来自标题。我找到了VirtualProtect函数的头文件(memoryapi.h包含在winbase.h包含在windows.h中),函数的声明依赖于这个声明:#ifWINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)它似乎是一个宏,用于定义编译器根据平台应该使用哪些API。那么,如何更改项目的配置以将其设置为纯桌面应用程序?我不知道为什么VS坚持要为我正在编译

c++ - 在 win32 应用程序中动态设置 DPI 感知级别

我正在寻找任何方法来动态设置DPI感知级别(基于用户输入)。我遇到了this.它建议我应该使用setProcessDpiAwareness功能来设置意识水平。但此api调用仅受Windows8.1预览版支持。我可以使用任何其他方法动态设置Windows7及更高版本支持的Dpi感知级别吗?提前致谢。 最佳答案 在Windows8.1中每个显示器的DPI感知出现之前,有SetProcessDPIAware,从Vista开始支持。但是,令我印象深刻的是,您可能希望在运行时做出此决定。最佳做法是将应用程序设计为具有高DPI感知能力,并将这种

c++ - _WIN32_WINNT 定义在 header 中更改,这是否会导致二进制不兼容?

在VS2010中,我正在努力将应用程序更新到第三方库的新版本,该库要求_WIN32_WINNT至少为0x501,但另一个提供二进制共享库的第三方共享库在header中将其定义为0x500包含在应用程序中。如果修改了,是否会出现二进制不兼容或者这是一个无关紧要的更改?我是否必须从将其定义为0x500的库中请求新的二进制文件?我不确定如何判断这是否需要新的bin——我认为如果任何类/结构的大小或命名发生变化,或者任何方法/函数签名发生变化,则需要进行新的编译。 最佳答案 简短的回答:可能不会,但如果是的话,那你就进退两难了。长答案:_W

c++ - Win32 文件 IO 工作但 fopen 等。阿尔。失败。这里发生了什么?

以前从来没有过。如果我使用fopen()等函数从磁盘读取文件,fopen会成功,但FILE*内容看起来有点NULL-ish。然后我尝试fseek(SEEK_END)并报告文件大小为0字节。如果我对CreateFile()、GetFileSize()、ReadFile()执行相同的操作,它就会起作用。相同的功能,相同的路径...VS2013社区版,Win7x64,64位编译。我测试的文件很小(从不超过400字节)。它们位于E:盘(E:\temp),这是一个本地分区。我有什么想法需要焊接我的电脑来解决这个问题吗?:)staticvoidLoadFile(conststd::string&p

c - 写入文件时获得不同的输出

我编写了一个程序来保存足球队的统计数据。我将统计数据保存在一个文件中,并将所有匹配项记录在另一个名为“record.txt”的文件中。在我的record.txt文件中,写的格式是:[opponentname][currentdate]我面临的问题是,有时我在一行中得到“对手姓名”“日期”,有时日期在新行中开始这是我得到的图像picofoutputfile这是我的代码time_trawtime;structtm*timeinfo;charbuffer[80];time(&rawtime);timeinfo=localtime(&rawtime);strftime(buffer,80,"%

c++ - 可移植可执行 DOS header 长度

我一直在研究这个图像来构建一个可移植的可执行文件:https://i.imgur.com/LIImg.jpg图像/演练表示PEheader从0x40(十进制为64)开始。但是,十六进制转储显示DOSheader的长度为32字节。每个字段是否以4个字节打包?查看WinNT.h中的IMAGE_DOS_HEADER,好像也不合适。它有16个2字节的字段,一个4长度的2字节数组,一个10长度的2字节数组,以及指向PE位置的4字节指针。无论你怎么看,它加起来都不等于64... 最佳答案 However,thehexadecimaldumpsa